package cn.com.aiton.taui.util;

import android.annotation.TargetApi;
import android.os.Build;
import android.view.View;

/**
 * An API 11+ implementation of {@link SystemUiHider}. Uses APIs available in
 * Honeycomb and later (specifically {@link View#setSystemUiVisibility(int)}) to
 * show and hide the system UI.
 */
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class SystemUiHiderHoneycomb extends SystemUiHiderBase {
    /**
     * Flags for {@link View#setSystemUiVisibility(int)} to use when showing the
     * system UI.
     */
    private int mShowFlags;

    /**
     * Flags for {@link View#setSystemUiVisibility(int)} to use when hiding the
     * system UI.
     */
    private int mHideFlags;

    /**
     * Flags to test against the first parameter in
     * {@link android.view.View.OnSystemUiVisibilityChangeListener#onSystemUiVisibilityChange(int)}
     * to determine the system UI visibility state.
     */
    private int mTestFlags;

    /**
     * Whether or not the system UI is currently visible. This is cached from
     * {@link android.view.View.OnSystemUiVisibilityChangeListener}.
     */
    private boolean mVisible = true;

    /**
     * Constructor not intended to be called by clients. Use
     * {@link SystemUiHider#getInstance} to obtain an instance.
     */
//    protected SystemUiHiderHoneycomb(Activity activity, View anchorView, int flags) {
//        super(activity, anchorView, flags);
//
//        mShowFlags = View.SYSTEM_UI_FLAG_VISIBLE;
//        mHideFlags = View.SYSTEM_UI_FLAG_LOW_PROFILE;
//        mTestFlags = View.SYSTEM_UI_FLAG_LOW_PROFILE;
//
//        if ((mFlags & FLAG_FULLSCREEN) != 0) {
//            // If the client requested fullscreen, add flags relevant to hiding
//            // the status bar. Note that some of these constants are new as of
//            // API 16 (Jelly Bean). It is safe to use them, as they are inlined
//            // at compile-time and do nothing on pre-Jelly Bean devices.
//            mShowFlags |= View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
//            mHideFlags |= View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
//                    | View.SYSTEM_UI_FLAG_FULLSCREEN;
//        }
//
//        if ((mFlags & FLAG_HIDE_NAVIGATION) != 0) {
//            // If the client requested hiding navigation, add relevant flags.
//            mShowFlags |= View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
//            mHideFlags |= View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
//                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
//            mTestFlags |= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
//        }
//    }

    /** {@inheritDoc} */
//    @Override
//    public void setup() {
//        mAnchorView.setOnSystemUiVisibilityChangeListener(mSystemUiVisibilityChangeListener);
//    }

    /** {@inheritDoc} */
//    @Override
//    public void hide() {
//        mAnchorView.setSystemUiVisibility(mHideFlags);
//    }

    /** {@inheritDoc} */
//    @Override
//    public void show() {
//        mAnchorView.setSystemUiVisibility(mShowFlags);
//    }

    /** {@inheritDoc} */
//    @Override
//    public boolean isVisible() {
//        return mVisible;
//    }
//
//    private View.OnSystemUiVisibilityChangeListener mSystemUiVisibilityChangeListener
//            = new View.OnSystemUiVisibilityChangeListener() {
//        @Override
//        public void onSystemUiVisibilityChange(int vis) {
//            // Test against mTestFlags to see if the system UI is visible.
//            if ((vis & mTestFlags) != 0) {
//                if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
//                    // Pre-Jelly Bean, we must manually hide the action bar
//                    // and use the old window flags API.
//                    mActivity.getActionBar().hide();
//                    mActivity.getWindow().setFlags(
//                            WindowManager.LayoutParams.FLAG_FULLSCREEN,
//                            WindowManager.LayoutParams.FLAG_FULLSCREEN);
//                }
//
//                // Trigger the registered listener and cache the visibility
//                // state.
//                mOnVisibilityChangeListener.onVisibilityChange(false);
//                mVisible = false;
//
//            } else {
//                mAnchorView.setSystemUiVisibility(mShowFlags);
//                if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
//                    // Pre-Jelly Bean, we must manually show the action bar
//                    // and use the old window flags API.
//                    mActivity.getActionBar().show();
//                    mActivity.getWindow().setFlags(
//                            0,
//                            WindowManager.LayoutParams.FLAG_FULLSCREEN);
//                }
//
//                // Trigger the registered listener and cache the visibility
//                // state.
//                mOnVisibilityChangeListener.onVisibilityChange(true);
//                mVisible = true;
//            }
//        }
//    };
}
